import time
import jwt

from django.utils.deprecation import MiddlewareMixin  
from django.shortcuts import reverse 
from django.http import HttpResponse, JsonResponse
from comp_test.settings import SECRET_KEY

#路由名单  根据URLname反向解析
LOGIN_REQUEST_LIST = [reverse(i) for i in ['search']]

#重写django request来临时的中间件
class LoginRequest(MiddlewareMixin):
    def process_request(self, request):
        if request.path in LOGIN_REQUEST_LIST:
            """
            一般token两种存储方式：在前后端分离模式下可以通过请求头存储，也可以直接通过post传参
            """
            token = request.POST.get('token')
            # token = request.META.get('HTTP_AUTHORIZATION',None)  
            if not token:
                return JsonResponse({'code': 20017, 'message': '用户未登录'})
            else:
                data = jwt.decode(token, SECRET_KEY, algorithms='HS256')
                if time.time() > data['expir']:
                    return JsonResponse({'code': 10086, 'message': '用户登录时间已过'})

